package com.puccampinas.finalproject.core.persistence.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import org.apache.commons.lang3.builder.ToStringBuilder;

import com.puccampinas.finalproject.core.persistence.entity.enums.ActivityStatus;
import com.puccampinas.finalproject.core.persistence.entity.enums.ActivityType;

@XmlType(name="")
@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.FIELD)
public class Activity implements Serializable {
	
	private static final long serialVersionUID = -9809781928367189L;

	@XmlElement
	private Long id;
	
	@XmlElement
	private ActivityType type;
	 
	@XmlElement
	private String name;
	
	@XmlElement
	private ActivityStatus status;
	
	@XmlElement
	private String description;
	
	@XmlElement
	private Integer category;
	
	@XmlElement
	private String prize;
	
	@XmlElement
	private Long prizeValue;
	
	@XmlElement
	private Integer numUsers;
	
	@XmlElement
	private String photo;
	
	@XmlElement
	private Boolean model;
	
	@XmlElement
	private Date creationDate;
	
	@XmlElement
	private Date startDate;
	
	@XmlElement
	private Date endDate;
	
	@XmlElement
	private Boolean presence;
	
	@XmlElement(name = "groups")
	private List<Integer> groups;
	
	@XmlElement(name = "steps")
	private List<Step> steps;
	
	public Activity() {
		
	}
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public ActivityType getType() {
		return type;
	}
	public void setType(ActivityType type) {
		this.type = type;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public ActivityStatus getStatus() {
		return status;
	}
	public void setStatus(ActivityStatus status) {
		this.status = status;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public Integer getCategory() {
		return category;
	}
	public void setCategory(Integer category) {
		this.category = category;
	}
	public String getPrize() {
		return prize;
	}
	public void setPrize(String prize) {
		this.prize = prize;
	}
	public Long getPrizeValue() {
		return prizeValue;
	}
	public void setPrizeValue(Long prizeValue) {
		this.prizeValue = prizeValue;
	}
	public Integer getNumUsers() {
		return numUsers;
	}
	public void setNumUsers(Integer numUsers) {
		this.numUsers = numUsers;
	}
	public String getPhoto() {
		return photo;
	}
	public void setPhoto(String photo) {
		this.photo = photo;
	}
	public Boolean getModel() {
		return model;
	}
	public void setModel(Boolean model) {
		this.model = model;
	}
	public Date getCreationDate() {
		return creationDate;
	}
	public void setCreationDate(Date creationDate) {
		this.creationDate = creationDate;
	}
	
	public Date getStartDate() {
		return startDate;
	}
	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}
	public Date getEndDate() {
		return endDate;
	}
	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}
	public Boolean getPresence() {
		return presence;
	}
	public void setPresence(Boolean presence) {
		this.presence = presence;
	}
	public List<Integer> getGroups() {
		return groups;
	}
	public void setGroups(List<Integer> groups) {
		this.groups = groups;
	}
	
	public List<Step> getSteps() {
		return steps;
	}

	public void setSteps(List<Step> steps) {
		this.steps = steps;
	}

	@Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
	
}
